/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.smartitengineering.user.ws.resources; /** * * @author modhu7 */ import com.smartitengineering.user.service.Services; import com.smartitengineering.user.domain.Organization; import com.smartitengineering.user.domain.Role; import com.smartitengineering.user.domain.User; import com.smartitengineering.util.rest.atom.server.AbstractResource; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; import org.apache.abdera.model.Feed; import org.apache.abdera.model.Link; /** * * @author modhu7 */ @Path("/orgs/sn/{organizationUniqueShortName}/users/un/{username}/roles/name/{roleName}") public class UserRoleResource extends AbstractResource { private String organizationUniqueShortName; private String username; private String roleName; private Organization organization; private User user; private Role role; private static String REL_ROLE = "role"; public UserRoleResource(@PathParam("organizationUniqueShortName") String organizationUniqueShortName, @PathParam( "username") String username, @PathParam("roleName") String roleName) { this.organizationUniqueShortName = organizationUniqueShortName; this.username = username; this.roleName = roleName; role = getRole(); user = getUser(); organization = getOrganization(); } @GET @Produces(MediaType.APPLICATION_ATOM_XML) public Response get() { ResponseBuilder responseBuilder; try { responseBuilder = Response.status(Status.OK); Feed roleFeed = getUserRoleFeed(); responseBuilder = Response.ok(roleFeed); } catch (Exception ex) { responseBuilder = Response.status(Status.INTERNAL_SERVER_ERROR); } return responseBuilder.build(); } @DELETE public Response delete() { ResponseBuilder responseBuilder; try { responseBuilder = Response.status(Status.OK); user.getRoles().remove(role); Services.getInstance().getUserService().update(user); } catch (Exception ex) { responseBuilder = Response.status(Status.INTERNAL_SERVER_ERROR); } return responseBuilder.build(); } private Feed getUserRoleFeed() { Feed roleFeed = getAbderaFactory().newFeed(); roleFeed.setId(roleName); roleFeed.setTitle(roleName); roleFeed.addLink(getSelfLink()); Link altLink = getAbderaFactory().newLink(); altLink.setHref(getRelativeURIBuilder().path(UserRoleResource.class).build(organizationUniqueShortName, username, roleName).toString()); altLink.setRel(Link.REL_ALTERNATE); altLink.setMimeType(MediaType.APPLICATION_JSON); roleFeed.addLink(altLink); Link roleLink = getAbderaFactory().newLink(); roleLink.setHref(getRelativeURIBuilder().path(RoleResource.class).build(roleName).toString()); roleLink.setRel(REL_ROLE); roleLink.setMimeType(MediaType.APPLICATION_JSON); roleFeed.addLink(roleLink); return roleFeed; } private Role getRole() { return Services.getInstance().getRoleService().getRoleByName(roleName); } private User getUser() { return Services.getInstance().getUserService().getUserByOrganizationAndUserName(organizationUniqueShortName, username); } private Organization getOrganization() { return Services.getInstance().getOrganizationService().getOrganizationByUniqueShortName(organizationUniqueShortName); } @Override protected String getAuthor() { return "Smart User"; } }